//
// Created by TheMorbidArk on 2022/11/6.
//

#ifndef VANTIDEL_CPP_OBJMETA_H
#define VANTIDEL_CPP_OBJMETA_H

#include "ObjString.h"

class ObjModule {
public:
    ObjHeader objHeader;
    SymbolTable moduleVarName{};   // 模块中的模块变量名
    ValueBuffer moduleVarValue{};  // 模块中的模块变量值
    ObjString *name;            // 模块名

    ObjModule(VM *vm, const char *modName);
    static ObjModule *NewObjModule(VM *vm, const char *modName);

};// 模块对象

class ObjInstance {
public:
    ObjHeader objHeader;
    // 具体的字段
    Value fields[0];

    ObjInstance(VM *vm, Class * objClass);
    static ObjInstance *NewObjInstance(VM *vm, Class * objClass);

}; // 对象实例

#endif //VANTIDEL_CPP_OBJMETA_H
